Chaque code de compteur doit être unique. Cependant, plusieurs types de documents peuvent être affectés au même code de compteur. Vous devez ainsi vous assurer de ne pas dupliquer la structure des types de documents, car leurs clés doivent rester uniques. Cela pourrait engendrer l'annulation de la transaction.
Pour définir la valeur de début du compteur, sélectionnez la case à cocher Remise à zéro (ZERO) ; vous pouvez également indiquer la valeur de début de chaque composant du compteur dans la fonction Valeurs des compteurs (MODCPT). Vous pouvez également définir le compteur suivant dans l'ordre chronologique, ce qui facilitera la récupération des données en cas de redémarrage du système.
En cas de démarrage du système ou d'un nouveau module, il est recommandé de supprimer la fonction Valeurs des compteurs (MODCPT) du menu. Ainsi, les compteurs resteront dans l'ordre chronologique.
Reportez-vous à la documentation de Mise en oeuvre
La fonction Structures contient un écran unique présentant les différents éléments clés du compteur.
Présentation
Chaque bloc représente un élément clé du compteur que vous devez définir. Il faut cependant noter que le bloc Composants est variable. Ce bloc vous permet de définir les composants constitutant la structure du compteur, à adapter aux besoins de votre organisation.
Champs
Les champs suivants sont présents dans cet onglet :
Bloc numéro 1
| Ce code identifie le compteur référencé lors de la génération du numéro automatique d'un document. Un compteur est un champ de type alphanumérique de 1 à 20 caractères. La valeur du compteur est constituée d'une série de composants concaténés de gauche à droite. |
| Saisissez la description de la fiche concernée. Cet intitulé long est utilisé en titre dans les écrans et les états. |
Niveau définition
| Utilisez ce bouton radio pour indiquer si ce compteur est disponible pour la totalité du dossier, pour une seule société, ou pour un seul site. Pour éviter la duplication des numéros, il est recommendé d'ajouter une description ou des commentaires dans le code décrivant le compteur. Ces informations sont notamment importantes pour les compteurs spécifiques à une société ou un site. |
Niveau RAZ
| Utilisez ce bouton radio pour déterminer si le compteur contient une valeur unique à un instant, un mois, une année, un exercice, ou une période comptable donnés. Pour éviter la duplication, ceci suppose que le compteur contiennent les composants appropriés, en particulier l'année, le mois, le jour, ou la semaine. Ce champ peut être combiné au champ Niveau définition au moyen d'un Complément pour définir le nombre de séquences de numérotation à affecter au compteur (la séquence doit être unique pour chaque mois, site et complément). En fonction de ces deux valeurs, il est possible d'introduire des composants permettant d'éviter des problèmes de duplication. Par exemple, si vous définissez un niveau de RAZ (retour à zéro) annuel, l'année doit être un composant du compteur. De même, si le compteur est défini par société, le site ou la société doivent être des composants du compteur. |
Type
| Un compteur engendre toujours des clés alphanumériques. Si vous sélectionnez la valeur Numérique au niveau du Type, les zéros en tête de la valeur seront supprimés. Ainsi, un compteur déclaré numérique sur 6 chiffres commencera par la valeur "1", alors qu'un compteur alphanumérique sur 6 chiffres commencera par la valeur "000001". Si le compteur est défini comme numérique ou alphanumérique, les composants sont déclarés dans la structure du compteur, et aucun contrôle ne sera effectué en création. A son utilisation, seule la partie numérique du compteur sera renvoyée. |
Tableau Composants
| Numéro de la ligne. |
| Définissez chaque type de composant constituant la structure du compteur. |
| Se reporter à l'explication relative à chaque composant constituant la structure du compteur. Chaque composant détient une longueur maximum ou prédéterminée :
|
| Saisissez une chaîne de caractères fixe. Vous pouvez saisir des caractères alphanumériques, y compris des caractères spéciaux comme / ou %. Ne saisissez pas de guillemets simples ou doubles autour de la valeur. |
Bloc numéro 6
| Il est recommandé de positionner ce bouton radio sur Normal. Pour plus d'informations sur ce champ, se reporter à la documentation sur les Types de séquence. |
| Ce champ contient une valeur lorsque le Type de séquence est défini sur Séquence BDD. Il affiche le nom de la table associé aux numéros. |
| Ce champ contient une valeur lorsque le Type de séquence est défini sur Groupé. Il affiche le nombre de numéros qui seront affectés simultanément. |
Divers
| Sélectionnez cette case à cocher pour activer le contrôle chronologique des documents dont la législation requiert des numéros datés dans l'ordre chronologique. Il s'agit d'une exigence pour certaines législations, comme la législation italienne. Le contrôle chronologique est uniquement activé lorsqu'une facture est créée dans les modules Achats, Ventes, ou Comptabilité tiers. |
| Ce champ affiche la longueur maximum autorisée pour ce compteur. |
| Sélectionnez cette case à cocher pour remettre la valeur initiale du compteur à zéro. Le premier compteur généré commencera à 1. |
| Ce champ affiche le code de la législation du pays, par exemple FRA pour la législation française. Ce code, associé à une société, permet d’affecter les règles et paramètres prédéfinis qui sont requis pour répondre aux exigences légales du pays. Ce code peut inclure des règles de calcul, des états légaux, des déclarations légales, la gestion de taxes, etc. Les législations sont définies dans la table diverse 909. Des paramètres généraux peuvent également être définis au niveau législation. |
Type composant | Explication |
Constante | Chaîne de caractères fixe. Cette valeur doit être saisie dans la colonne Formule. Ne saisissez pas de guillemets simples ou doubles autour de la valeur. |
Année | Longueur = 1 correspond au dernier chiffre de l'année (0 à 9). |
Mois | Longueur = 2 correspond au mois en chiffres (00 à 12). |
Semaine | Longueur = 2 correspond au numéro de la semaine (00 à 53). |
Jour | Longueur = 1 correspond au numéro du jour de la semaine (1 à 7). |
Société | Code de la société à laquelle le mouvement est affecté (1 à 5 caractères). |
Site | Code du site auquel le mouvement est affecté (1 à 3 caractères). |
Compteur | Partie incrémentale de la structure du compteur. Cette valeur est incrémentée par 1. La valeur initiale est 1. |
Complément | Composant additionnel. Cette valeur dépend du module dans lequel le composant du compteur est utilisé. |
Exercice | Le numéro d'exercice est défini sur 1 à 3 chiffres (valeur égale à 1 pour le premier exercice ouvert). Cette numérotation est notamment utile si vous travaillez avec des exercices décalés. Dans ce cas, une rupture se produit dans la numérotation lorsque'on change d'année. Ceci peut arriver au milieu de l'exercice fiscal. |
Période | Le numéro de la période est défini sur 1 à 3 chiffres (commençant à 1, et pouvant atteindre le nombre maximum de périodes de l'exercice). |
Formule | La formule indiquée est ajoutée à la structure du compteur. Il s'agit essentiellement d'une suite de caractères indépendants, qui seront intégrés à la structure de compteur générée. La formule peut être de type alphanumérique, numérique, ou une date, limitée à 20 caractères. Si vous utilisez des caractères alphanumériques, ils seront transformés en majuscules, puis formatés sur le nombre exact de caractères prévus. |
Le code du complément permet de définir un segment de compteur en fonction du contexte, sans avoir à définir deux compteurs différents. Dans ce cas, il faut noter qu'une séquence chronologique s'applique à chaque valeur prise par le champ Complément.
L'utilisation du champ Complément dépend du contexte de chacune des fonctions.
Dans les fonctions Superviseur, le complément est utilisable pour le compteur des numéros de lot dans le sas d'import/export. Il contient le code du modèle d'import/export utilisé.
La liste des compléments disponibles dans les modules métiers est définie dans une documentation annexe.
Dans tous les autres cas, le numéro de complément n'est pas affecté. Vous pouvez cependant utiliser un point d’entrée spécifique pour attribuer une valeur au numéro de complément dans un contexte particulier.
Vous pouvez également intégrer le code complément dans une séquence de numérotation sans pour autant utiliser une séquence différente par valeur de compteur. Pour cela, vous devez utiliser une composante de type Formule, en donnant comme formule [L]COMPLEMENT (COMPLEMENT est la variable locale connue du sous-programme de numérotation qui stocke la valeur courante du complément).
Le Type de séquence est utile pour les installations client impliquant un grand nombre de postes de travail, et donc une activité importante de création de documents du même type. En effet, selon le type de séquence utilisé, il peut y avoir une contention plus ou moins forte (conflits transactionnels liés à l'obtention de numéros de compteurs).
L'attribution du numéro, essentiellement lors de la création d'un document (commande, écriture, facture, etc.) s'effectue dans la transaction de création elle-même. Cela signifie qu'en cas d'abandon de la transaction par rollback (annulation), le numéro n'est pas perdu. En revanche, tant que la transaction de création (qui peut durer quelques secondes) n'est pas terminée, toute transaction concurrente de création du même type de document ne pourra pas obtenir de numéro et échouera. Un rollback de cette transaction concurrente sera alors effectué, suivi d'une nouvelle tentative (qui aboutira cette fois si la première transaction est terminée).
Le nombre d'essais successifs réalisés en cas de verrouillage de ce type avant l'abandon de la transaction sur erreur est paramétrable par le paramètre ROLLBACK du chapitre SUP. En cas de contention, vous pouvez donc augmenter la valeur de ce paramètre. Cependant, il faut noter que la consommation de ressources du serveur de données peut augmenter, au détriment des performances. Dans ce cas, vous pouvez également adapter le type de séquence.
En contrepartie de cette contention, le compteur Normal garantit un respect de l'ordre séquentiel dans le temps : deux appels successifs dans le temps à un compteur donné donneront des numéros croissants, toutes les conditions liées à la structure du compteur (société, site, période, complément) étant égales par ailleurs. De plus, aucune perte de numéro relative à un verrouillage ne peut intervenir. Ce type de compteur est donc recommandé pour les documents légaux pour lesquels on exige à la fois des séquences strictes et aucun "trou" de numérotation.
Les numéros sont affectés par groupe de N numéros (où N correspond à une définition). La contention est donc moins importante, car seule une attribution sur N provoque une contention ; les autres attributions utilisant un numéro disponible.
En contrepartie, l'attribution séquentielle des numéros n'est pas garantie, et une perte de numéros est possible pour les compteurs dépendant de mois ou de la période. Par exemple, si N vaut 10, que les numéros de 1 à 8 ont déjà été attribués, et que 3 créations simultanées ont lieu. Le numéro 9 est attribué à la première, le numéro 10 à la deuxième, et aucun numéro ne sera disponible pour la troisième dans la première tranche de 10 numéros. La tranche de 11 à 20 sera alors créée, et le premier numéro affecté sera le 11. Si entre temps la première transaction a échoué pour d'autres raisons, le numéro 9 sera disponible pour une nouvelle transaction. Si plus aucune transaction n'est lancée, alors tous les numéros de 1 à 11, sauf le 9, sont utilisés, et les prochains numéros à attribuer seront (dans l'ordre) le 9, puis le 12 et les suivants. Il n'y a donc pas respect strict du numéro de séquence. S'il n'y a plus aucune création de document dans la journée, et si un document est créé le lendemain, un document est daté du jour J numéroté 11, et un autre document daté du jour J+1 numéroté 9. Enfin, si les compteurs intègrent le numéro du mois et que cette situation arrive en fin de mois, on obtient un trou dans la numérotation (mais il reste traçable, puisque ce numéro se trouve dans la liste des numéros à attribuer).
L'attribution de numéro s'effectue hors transaction, c'est-à-dire qu'il n'y a aucune contention, mais aucun retour en arrière possible (si le numéro n'est pas utilisé, il est définitivement perdu). Ce type de compteur s'appuie sur une séquence de la base de données (BDD). Safe X3 crée, pour chaque table de la base de données, une séquence qui lui est normalement associée pour obtenir ainsi un numéro technique. Il est important de noter que cette numérotation n'est jamais réinitialisée à 0 (il faut donc prévoir un nombre important de chiffres associé à la séquence de numérotation dans le compteur). Cette numérotation est également strictement séquentielle (l'ordre des numéros attribué est toujours croissant dans le temps), mais il peut toujours exister des trous sans possibilité ni de les justifier, ni de les récupérer. Cette caractéristique facilite les cas où un numéro technique unique est requis, et pour lequel aucun justificatif des trous dans la séquence n'est nécessaire.
Le tableau ci-dessous résume les avantages et inconvénients des différents types de compteurs :
Type de compteur | Séquence croissante | Perte de numéro | Contention multi-utilisateurs |
Normal | Toujours | Jamais | Forte |
Groupé | Pas toujours | En fin de période, mais justifiable (liste des numéros perdus) | Moyenne (d'autant plus faible que N est grand) |
Séquence BDD | Toujours | Oui, sans justification | Nulle |
Cliquez sur l'action Copie pour copier le code et la structure du compteur vers un autre dossier. |
Outre les messages génériques, les messages d'erreur suivants peuvent apparaître lors de la saisie :
Vous avez tenté de définir un compteur ayant deux composantes de type No Séquence (un seul numéro de séquence est autorisé par compteur).
La longueur demandée n'est pas compatible avec le paramètre (par exemple, une année sur 8 chiffres ou un mois sur 5 caractères).
La longueur totale du compteur excède 20 caractères, ou la somme des longueurs des composants est différente de la longueur totale.
La formule de calcul qui a été saisie a une syntaxe incorrecte.
Un compteur basé sur une séquence est toujours basé sur une table présente dans le dossier courant. Ce n'est pas le cas de ce type de table.
Un compteur basé sur une séquence de base de données (BDD) autorise une seule séquence de numérotation (au niveau dossier) et ne peut pas être remise à zéro.